home *** CD-ROM | disk | FTP | other *** search
- ; demo.lsp
- ; demo program for Overlay
- ;
- ; Derrick Oswald
- ; Nexsys Consulting Inc.
- ; 44 Douglas Drive
- ; Ayr, Ontario
- ; N0B 1E0
- ; (519) 632-8243
- ; (519) 632-8244 FAX
- ;
- (setvar "cmdecho" 1)
-
- (setq delayconstant 1000.0)
-
- (defun delaytime (x)
- (* x delayconstant))
-
- ; delay
- ; delay for n milliseconds
- (defun delay (n / start)
- (setq start (getvar "date"))
- (while start
- (if (> (* 8.64e7 (- (getvar "date") start)) n)
- (setq start ())))
- (princ))
-
- ; typein
- ; simulate user typing in
- (defun typein (s / l)
- (setq i 1 l (strlen s))
- (while (<= i l)
- (delay (delaytime 0.3))
- (princ (substr s i 1))
- (setq i (1+ i)))
- (delay (delaytime 0.6))
- (princ))
-
- ; backspace
- ; backup characters
- (defun backspace (n)
- (while (> n 0)
- (princ (chr 8))
- (setq n (1- n)))
- (princ))
-
- ; submit
- ; simulate a command submission
- (defun submit (s)
- (typein s)
- (backspace (strlen s))
- (command s)
- (princ))
-
- ; dragline
- ; draw a drag line
- (defun dragline (p1 p2 / x)
- (setq x 0.0)
- (while (< x 1.0)
- (delay (delaytime 0.1))
- (grdraw p1 (polar p1 (angle p1 p2) (* (distance p1 p2) x)) -1 0)
- (setq x (min 1.0 (+ x 0.05))))
- (princ))
-
- ; drawbox
- ; draw a box in XOR ink
- (defun drawbox (p1 p2 / pa pb)
- (setq pa (list (car p1) (cadr p2))
- pb (list (car p2) (cadr p1)))
- (grdraw p1 pa -1 0)
- (grdraw pa p2 -1 0)
- (grdraw p2 pb -1 0)
- (grdraw pb p1 -1 0)
- (princ))
-
- ; explodingbox
- ; draw an exploding box
- (defun explodingbox (p1 p2 / x)
- (setq x 0.0)
- (while (< x 1.0)
- (delay (delaytime 0.1))
- (drawbox p1 (polar p1 (angle p1 p2) (* (distance p1 p2) x)))
- (setq x (min 1.0 (+ x 0.05)))
- (drawbox p1 (polar p1 (angle p1 p2) (* (distance p1 p2) x))))
- (delay (delaytime 1.0))
- (drawbox p1 (polar p1 (angle p1 p2) (* (distance p1 p2) x)))
- (princ))
-
- ; zoomin
- ; simulate a zoom in
- (defun zoomin (p1 p2)
- (submit "ZOOM")
- (submit "W")
- (delay (delaytime 1.0))
- (command p1)
- (explodingbox p1 p2)
- (command p2)
- (rredraw)
- (princ))
-
- ; docommand
- ; simulate command prompt
- (defun docommand ()
- (princ "\nCommand: ")
- (delay (delaytime 1)))
-
- ; doredraw
- ; simulate redraw
- (defun doredraw ()
- ; redraw
- (typein "RREDRAW\n")
- (redraw)
- (rredraw)
- (princ))
-
- ; colour
- ; change the colour
- (defun colour (n)
- (setvar "CMDECHO" 0)
- (if n
- (command "colour" n)
- (command "colour" "BYLAYER"))
- (setvar "CMDECHO" 1))
-
- ; changelastcolour
- ; change last entities colour
- (defun changelastcolour (newcolour)
- (submit "CHANGE")
- (delay (delaytime 2))
- (submit "L")
- (delay (delaytime 2))
- (command "")
- (submit "P")
- (submit "C")
- (submit newcolour)
- (delay (delaytime 1))
- (command "")
- (doredraw)
- (docommand)
- (princ))
-
- ; doerase
- ; simulate an erase
- (defun doerase (entity)
- (submit "ERASE")
- (delay (delaytime 1))
- (command entity)
- (delay (delaytime 1))
- (command "")
- (doredraw)
- (docommand)
- (princ))
-
- ; doovly
- ; simulate ovly command
- (defun doovly (filename x y r / ename)
- (typein "ROVLY")
- (princ "\nRaster filename: ")
- (typein filename)
- (princ (strcat "\nImage: (" (itoa x) "," (itoa y) ")\nOrigin <0,0>: "))
- (typein "0,0")
- (princ (strcat "\nScale/Opposite corner <"
- (rtos (/ x r) 2 3)
- ","
- (rtos (/ y r) 2 3)
- ">: "))
- (delay (delaytime 1.5)) ; simulate RETURN
- (princ "\nRotation angle <0>: ")
- (delay (delaytime 1.5)) ; simulate RETURN
- (princ "\n")
-
- (setq ename (rovly filename '(0 0) 0.0))
- (docommand)
- ename)
-
- (defun c:demo ( / again )
-
- ; uncomment this and at end of file for repeating demo
- ; (setq again T)
- ; (while again
-
- ; erase everything in the drawing
- (setq ss (ssget "X" '()))
- (if ss
- (command "erase" ss ""))
- (redraw)
-
- ; put up the first screen
- (rtutorial "demo.txt" 0 (delaytime 7))
-
- ; put up the intro screen
- (rtutorial "demo.txt" 1 (delaytime 18))
-
- ; pretend to key in the command
- (setq image (doovly "LOT74.TIF" 3019 3551 200.0))
-
- ; explain about rredraw
- (rtutorial "demo.txt" 2 (delaytime 27))
-
- ; zoom extents
- (submit "ZOOM")
- (submit "E")
-
- ; redraw
- (typein "RREDRAW\n")
- (rredraw)
- (docommand)
-
- ; explain about COLOUR
- (rtutorial "demo.txt" 3 (delaytime 21))
-
- (changelastcolour "BLUE")
-
- ; explain about RCLIP
- (rtutorial "demo.txt" 4 (delaytime 27))
-
- (zoomin '(6.3 11.5) '(14.5 17.0))
-
- ; draw a polyline
- (setq point1 (list 6.8 13.5 0.0))
- (setq point2 (list 10.8 15.4 0.0))
- ; these points are required later:
- (setq point3 (list 9.75 14.75 0.0))
-
- ; create a polyline
- (colour 3)
- (submit "PLINE")
- (delay (delaytime 1))
- (command point1)
- (delay (delaytime 1))
- (command (list (car point1) (cadr point2)))
- (delay (delaytime 1))
- (command point2)
- (delay (delaytime 1))
- (command (list (car point2) (cadr point1)))
- (delay (delaytime 1))
- (command "close")
- (colour ())
-
- ; clip out an area
- (typein "RCLIP")
- (princ "\nPolyline/<First corner>: ")
- (typein "P")
- (princ "\nSelect polyline: ")
- (delay (delaytime 1))
-
- (setq pline (entlast))
- (setq subimage (rclip image pline "subimage.tif"))
- (docommand)
-
- (changelastcolour "MAGENTA")
-
- ; talk about multiple images and RERASE
- (rtutorial "demo.txt" 5 (delaytime 23))
-
- ; move the sub-image
- (submit "MOVE")
- (delay (delaytime 1))
- (submit "L")
- (delay (delaytime 1))
- (command "")
- (delay (delaytime 1))
- (command point1)
- (dragline point1 point3)
- (command point3)
- (docommand)
- (doredraw)
- (docommand)
-
- ; erase an area
- (typein "RERASE\n")
- (princ "Select image: ")
- (delay (delaytime 1))
- (typein "\n")
- (princ "Polyline/<First corner>: ")
- (typein "P\n")
- (princ "\nSelect polyline: ")
- (delay (delaytime 1))
- (rerase image pline)
- (docommand)
-
- ; erase polyline
- (doerase pline)
-
- ; talk about rcombine
- (rtutorial "demo.txt" 6 (delaytime 25))
-
- ; combine images
- (typein "RCOMBINE")
- (princ "\nSelect target image: ")
- (delay (delaytime 2))
- (princ "\nSelect source image: ")
- (rcombine image subimage)
- (docommand)
- (doredraw)
- (docommand)
-
- ; erase the subimage
- (doerase subimage)
-
- ; talk about rmerge
- (rtutorial "demo.txt" 7 (delaytime 21))
-
- ; insert the entities
- (submit "INSERT")
- (submit "ENTITIES")
- (delay (delaytime 1))
- (command point1)
- (submit "1")
- (submit "1")
- (submit "0")
- (setq ss (ssadd (entlast)))
-
- ; merge the entities
- (typein "RMERGE")
- (princ "\nBrushwidth <1>: ")
- (typein "4")
- (princ "\nMake ends <Round>/Square: ")
- (typein "ROUND\n")
- (rmerge image 4 "ROUND" ss)
- (docommand)
-
- ; erase the block
- (setq ss (ssadd (entlast)))
- (doerase ss)
-
- ; zoom extents
- (submit "ZOOM")
- (submit "E")
- (rredraw)
-
- ; talk about save
- (rtutorial "demo.txt" 8 (delaytime 25))
-
- ; save the image
- (typein "RSAVE")
- (princ "\nFile name? <C:\\OVLYDEMO\\LOT74.TIF>: ")
- (typein "LOT74.MIL\n")
- (rsave image "LOT74.MIL")
- (docommand)
-
- ; erase the image
- (doerase image)
-
- ; explain about rotation
- (rtutorial "demo.txt" 9 (delaytime 25))
-
- ; insert the image
- (setq image (doovly "3096.TIF" 1035 1016 200.0))
- ; save it so the demo can be repeated
- (rmode "quiet" 1)
- (rsave image "30960000.TIF")
- (rmode "quiet" 0)
-
- ; zoom extents
- (submit "ZOOM")
- (submit "E")
- (rredraw)
-
- ; change to green
- (changelastcolour "GREEN")
-
- ; rotate a few degrees
- (submit "ROTATE")
- (delay (delaytime 1))
- (submit "L")
- (delay (delaytime 1))
- (command "")
- (submit "0,0")
- (submit "2.2373779")
-
- ; zoom extents
- (submit "ZOOM")
- (submit "E")
- (rredraw)
-
- ; talk about rrectify
- (rtutorial "demo.txt" 10 (delaytime 20))
-
- ; rectify the image
- (typein "RRECTIFY\n")
- (rrectify image)
- (redraw)
- (rredraw)
- (docommand)
-
- ; talk about rvec
- (rtutorial "demo.txt" 11 (delaytime 21))
-
- ; perform raster to vector conversion
- (typein "RVEC")
- (princ "\nConversion type Solid/Outline/<Centerline>: ")
- (typein "CENTERLINE")
- (princ "\nError tolerance <1>: ")
- (typein "2.0\n")
- (rvec image "CENTERLINE" 2.0)
- (docommand)
-
- ; redraw
- (rredraw)
-
- ; talk about rplot
- (rtutorial "demo.txt" 12 (delaytime 17))
-
- ; summarize
- (rtutorial "demo.txt" 13 (delaytime 17))
-
- ; uncomment this and at top of function for repeating demo
- ; (initget 0 "Yes No")
- ; (setq again (getkword "Would you like to see the demo again? <N>: "))
- ; (if (= again "No")
- ; (setq again ())))
-
- ; print ending message
- (princ "\nDemo finished.")
- (docommand)
-
- (princ))
-
-